#ifndef COLISION_H_
#define COLISION_H_

#include "math.h"

#include "..\common\figuras\circulo.h"
#include "..\common\figuras\segmento.h"
#include "..\common\figuras\triangulo.h"
#include "..\common\figuras\rectangulo.h"
#include "..\common\figuras\tejo.h"

#include "..\common\figuras\pad.h"


#include <vector>
#include <list>

using namespace std;

#define NON_CONSTANT_SEGMENT	0
#define CONSTANT_SEGMENT_H		1
#define CONSTANT_SEGMENT_V		2

class colision
{

private:
	bool colision::interseccionSegmentoCirculo(punto* p1, circulo* circulo, punto* pInt, float* M, float* C);

	//bool colision::choquePelotaDispersorCirculo(circulo* circulo, tejo* tejo);

public:

	bool comparoDosPuntos(punto punto1, punto punto2);

	bool obtenerPendienteORdenada(float x1, float y1, float x2, float y2,float *pendiente, float *ordenada);

	bool verificaSiEstaEnRecta(float x1, float y1, float x2, float y2,float respuestaX, float respuestaY);

	bool colisionRectas(float ordenada, punto SegundoPuntoInicial, punto SegundoPuntoFinal,punto* puntos);

	//funcion del triangulo
	bool colision::colisionSegmentoRecta(punto puntoRectaA, punto puntoRectaB, punto puntoSegmentoA,punto puntoSegmentoB, float* pendiente, float* ordenada, punto* puntos);

	float distanciaDeDosPuntos(punto puntoInicial, punto puntoFinal);

	bool colisionTejoPad(tejo* tejo, punto puntoTejo,pad *pad);

	bool colisionTejoRectangulo(tejo* tejo, punto puntoTejo,rectangulo *pad);

	bool colisionTrianguloTejo(triangulo* triangulo,	tejo* tejo);
	bool colisionTrianguloTejo2(triangulo* triangulo,	tejo* tejo);

	bool colisionSegmentoHorizontal(punto puntoHorizontalInicial, punto puntoHorizontalFinal, punto puntoInicial,punto puntoFinal, punto* puntos);

	bool colisionSegmentoVertical(punto puntoVerticalInicial, punto puntoVerticalFinal, punto puntoInicial,punto puntoFinal, punto* puntos);

	bool colisionCirculoTejo(circulo* circulo,tejo* tejo);

	bool colisionSegmentoTejo(segmento* seg, tejo* tejo);

	void rectangulo_1();

	//Gol
	int esgol(tejo* tejo);

	float pasajeEntero(float numero, int decimales)
	{
		return (float(int(((numero * pow(10, decimales)))*100.0+.5))/100.0)/ pow(10, decimales);

	}


};

#endif
